import { JKManager } from "../JKManager";
import { DataUpdateTool } from "../Utils/DataUpdateTool";
import { TaskQueueTool } from "../Utils/TaskQueueTool";

const { ccclass, property } = cc._decorator;

/**
 * 弹窗界面组件基类
 */
@ccclass
export class PopupViewBase extends cc.Component {
    protected _dataUpdateTool: DataUpdateTool;
    protected _taskQueueTool: TaskQueueTool;

    onLoad(data: unknown = null): void {
        cc.log(`${cc.js.getClassName(this)} onLoad data = `, data)

        this._dataUpdateTool = new DataUpdateTool()
        this._taskQueueTool = new TaskQueueTool()
    }

    /**
     * 业务初始化，与 close 成对
     * @param first 首次初始化
     */
    init(data: unknown, first: boolean) {
        cc.error(`${cc.js.getClassName(this)} You have to overide function "init" in your view component!`)
    }

    update(dt: number): void {
        this._taskQueueTool.doCmd()
    }

    /**
     * 业务清理，与 init 成对
     */
    clear() {
        cc.error(`${cc.js.getClassName(this)} You did not overide function "clear" in your view component!`)
    }

    onDestroy(): void {
        cc.log(`${cc.js.getClassName(this)} onDestroy`)
    }

    // ====================================================================================
    // ===================================== 内部接口 ======================================
    // ====================================================================================



    // ====================================================================================
    // ===================================== 外部接口 ======================================
    // ====================================================================================

    /**
     * 获取界面动画执行目标节点
     */
    getViewActionTargetNode(): cc.Node {
        cc.warn(`${cc.js.getClassName(this)} You did not overide function "getViewActionTargetNode" in your view component!`)

        return null
    }
}